//
// Ishtar C++ Utility Library
//
// Task Facility - Task Forwards Declaration Header
//

#ifndef __ISHTAR_TASK_TASK_FWD_H
#define __ISHTAR_TASK_TASK_FWD_H

#include <Ishtar/Ishtar.h>

#if defined( ISHTAR_COMPILER_HAS_PRAGMA_ONCE )
#pragma once
#endif

#include <boost/function.hpp>


namespace Ishtar
{

namespace Task
{

///////////////////////////////////////////////////////////////////////////////
//
// Constants
//

// pre-defined duration, in milliseconds
const Uint DEFAULT_INTERVAL = 1;
const Uint DEFAULT_TIMEOUT  = 10000;


///////////////////////////////////////////////////////////////////////////////
//
// Typedefs
//

typedef boost::function< void() > WorkFunction;
typedef boost::function< Int()  > ExecuteFunction;  // See Thread::ExecuteFunction in Thread/Thread.h


///////////////////////////////////////////////////////////////////////////////
//
// Forwards Declaration
//

class Work;
class WorkExecutor;
class WorkPoller;
class WorkStrand;
class WorkerThread;

// implement classes
class WorkExecutorImpl;


///////////////////////////////////////////////////////////////////////////////

} // namespace Task

} // namespace Ishtar

#endif // __ISHTAR_TASK_TASK_FWD_H
